(function() {
	/*
		@require '/static/widege/admin/popup/popup.js'
		@require '/static/admin/operate/left/menuMessage.js'
		@require '/static/admin/operate/left/Menu.js'
	*/

	var $page = $('.layoutStyle').not('.hide'),
		$myLeft = $page.find('.my-left'),
		$wrap = $page.find('.menu-wrap'),
		$remaneTis = $page.find('.remaneTis'),

		tpl = __inline('/page/admin/operate/left/menuMessage.tpl'),
		MenuTpl = __inline('/page/admin/operate/left/Menu.tpl'),
		$menuMessageTip = $.popup('请填写菜单信息', tpl),

		animLT = {}, //记录动画结束坐标

		$curMenu = ''; //记录生成的menu放在哪个Element下

	$.PMS.menuMessage.init();

	//添加菜单
	$myLeft.on('click', '.add', function(e) {
		e.stopPropagation();
		var _belong,
			_rank,
			$this = $(this);
		if (this.nodeName.toLowerCase() === 'img') {
			$curMenu = _belong = $(this).parent().parent();

			_rank = +_belong.attr('data-menu') + 1;
			animLT['top'] = e.clientY;
			animLT['left'] = e.clientX;
			$menuMessageTip.find('#belong_to').val($this.next('a').text());


		} else {
			$curMenu = $wrap;
			_rank = '0';
			animLT['top'] = e.clientY;
			animLT['left'] = e.clientX; //这里需要改进
			$menuMessageTip.find('#belong_to').val('');

		}

		$menuMessageTip.find('#menu_rank').val(_rank);
		$menuMessageTip.show('slow').find('#menu_name').val('');
	})

	//删除菜单
	.on('click', '.delete', deleted)

	//单击菜单展开收起
	.on('click', 'div[data-txt]', function() {
		/*var $this = $(this).parent(),
			$chid = $this.children('div[data-menu]');
		$chid.slideToggle('fast');*/
		$('div[data-txt]').removeClass('current');
		$(this).addClass('current');
		$wrap.trigger('findRightMsg', $(this).attr('data-id'));
	})

	//双击菜单
	.on('dblclick', 'div[data-txt]', function(e) {
		$curMenu = $(this);
		$remaneTis.find('.text').val($curMenu.find('a').text());
		$remaneTis.css({
			top: e.clientY,
			zIndex: 100
		}).fadeIn('slow');
	})

	//鼠标滑过
	.on('mouseover', 'div[data-txt]', function() {
		$(this).children('img').show();
	})

	//鼠标离开
	.on('mouseleave', 'div[data-txt]', function() {
		$(this).children('img').hide();
	})


	//单击确定生成菜单
	$menuMessageTip.on('click', '.confirm', submit);

	//单击确定重命名
	$remaneTis.on('click', '.resource', rename);

	

	function submit(e) {
		if (!$.PMS.menuMessage.check()) return;
		var o = {
			type: 'post',
			url: '/operate/left/menu/add',
			data: {
				name: $menuMessageTip.find('#menu_name').val(),
				rank: $menuMessageTip.find('#menu_rank').val(),
				pre_name: $menuMessageTip.find('#belong_to').val(),
			},
			callback: function(res) {
				if (res.stutas.trim() == '0') { //成功
					$menuMessageTip.hide();
					var create = function() {
						var $MenuTpl = $(MenuTpl);
						$MenuTpl.attr('data-menu', res.rank);
						$MenuTpl.find('>[data-id]').attr('data-id', res.id);
						$MenuTpl.appendTo($curMenu).slideDown('slow');
						$MenuTpl.find('div[data-txt] > a').html(res.name);
					};
					moveElement({
						startX: e.clientX,
						startY: e.clientY,
						endX: animLT.left,
						endY: animLT.top,
						callback: create
					});
				} else {
					console.log(res.err)
					$menuMessageTip.find('.errortis').removeClass('right').addClass('error').html(res.err);
				}
			}
		};
		ajax(o);
	}

	/* 删除菜单 */
	function deleted(e) {
		e.stopPropagation();
		$curMenu = $(this).parent().parent();
		var o = {
			type: 'post',
			url: '/operate/left/menu/deleted',
			data: {
				name: $(this).nextAll('a').text(),
				rank: $(this).parent().parent().attr('data-menu')
			},
			callback: function(res) {
				if (res == '1') {
					$curMenu.remove();
				}
			}
		}
		ajax(o);
	};


	/*  菜单重命名  */
	function rename(e) {
		var $err = $remaneTis.find('.err'),
			value = $remaneTis.find('input').val(),
			oldvalue = $curMenu.find('a').text(),
			$parent = $curMenu.parent().parent();

		if (value === oldvalue) {
			$err.html('请重命名')
		} else if ($.PMS.renameCheck()) {
			var o = {
				type: 'post',
				url: '/operate/left/menu/rename',
				data: {
					name: value,
					old_name: oldvalue,
					pre_name: $parent.find('> [data-txt] > a').text(),
					rank: $curMenu.parent().attr('data-menu')
				},
				callback: function(res) {
					if (res == '1') {
						$curMenu.find('a').text(value);
						$remaneTis.css({
							zIndex: -1,
							top: '0px'
						}).fadeIn('slow');
					} else {
						$err.html(res.err)
					}
				}
			}
			ajax(o);
		}

	}

	function ajax(obj) {
		$.ajax({
			type: obj.type,
			url: obj.url,
			data: obj.data,
			success: obj.callback,
			error: function(err) {
				console.log(err);
			}
		});
	}

	/*生成各级菜单的动画效果*/
	function moveElement(obj) {
		var startX = obj.startX,
			startY = obj.startY,
			endX = obj.endX || 0,
			endY = obj.endY || 0,
			fragment = obj.fragment || '<div style=height:20px;width:20px;background-color:red;border-radius:10px;position:absolute;display:none;z-index:3;></div>',
			time = obj.time || 1000,

			callback = function() {
				$fragment.remove();
				obj.callback && obj.callback();
			},
			$fragment = $(fragment);

		if (!startX || !startY) {
			return;
		}

		$fragment.css({
			top: startY + 'px',
			left: startX + 'px'
		}).appendTo($myLeft).show();
		$fragment.animate({
			top: endY + 'px',
			left: endX + 'px',
			opacity: 0.5
		}, time, callback);
	};
})()